/*
Automatic clinic tests using a robot arm.
Copyright (C) 2010  CIC-CPC, CHU Gabriel Montpied
All other trademarks, logos and copyrights are the property
of their respective owners.

This file is part of cpc-painbot.

cpc-painbot is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

cpc-painbot is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with cpc-painbot.  If not, see <http://www.gnu.org/licenses/>.
*/

#include "include/operation/etalonnageeva.h"
#include "ui_etalonnageeva.h"

#include "indicateurprocess.h"
#include "capteur/eva.h"

EtalonnageEva::EtalonnageEva(IndicateurProcess *indicateur, QWidget *parent) :
    QWizardPage(parent),
    ui(new Ui::EtalonnageEva)
{
    ui->setupUi(this);

    connect(ui->minPushButton, SIGNAL(clicked()), indicateur, SLOT(majMin()));
    connect(ui->minPushButton, SIGNAL(clicked()), this, SLOT(activerMax()));
    connect(ui->maxPushButton, SIGNAL(clicked()), indicateur, SLOT(majMax()));

    connect(ui->maxPushButton, SIGNAL(clicked()), this, SIGNAL(completeChanged()));
    connect(ui->maxPushButton, SIGNAL(clicked()), indicateur, SLOT(demarrer()));
    connect(indicateur->capteur(), SIGNAL(mesure(QVariant)), this, SLOT(majMesure(QVariant)));

    connect(this, SIGNAL(arreterIndicateur()), indicateur, SLOT(arreter()));
}

EtalonnageEva::~EtalonnageEva()
{
    delete ui;
}


bool EtalonnageEva::isComplete() const
{
    return ui->maxPushButton->isEnabled();
}

bool EtalonnageEva::validatePage()
{
    emit arreterIndicateur();

    return QWizardPage::validatePage();
}

void EtalonnageEva::majMesure(const QVariant &mesure)
{
    Q_ASSERT(mesure.canConvert(QVariant::Double));
    ui->progressBar->setValue(qRound(mesure.toDouble()));
}

void EtalonnageEva::activerMax()
{
    ui->maxPushButton->setEnabled(true);
    ui->maxLabel->setEnabled(true);
}

void EtalonnageEva::changeEvent(QEvent *e)
{
    QWizardPage::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}
